package tt.dz.order.util.page;

import java.util.Map;

/**
 * 分页模块构建器
 * 
 * @author anson-worker
 * @see DefaultPaginationBuilder
 *
 */
public interface PaginationBuilder {

	/**
	 * 构建业务逻辑的sql<br>
	 * 
	 * @param countSql
	 *            当前业务条数的sql
	 * 
	 * @param businessSql
	 *            当前业务逻辑控制的sql<br>
	 * 
	 * @param params
	 *            当前的参数传递
	 */
	void doBusiness(String countSql, String businessSql, Map<String, Object> params);

	/**
	 * 做分页逻辑处理
	 * 
	 * @param currentPageNo
	 *            当前第几页
	 * @param prePageSize
	 *            每页多少条
	 */
	void doPagination(int currentPageNo, int prePageSize);

	/**
	 * 查询并生成Pagination
	 * 
	 * @param clazz
	 * @return
	 */
	<T> Pagination<T> product(Class<T> clazz);
}
